Systems, methods, and media for detecting content view ability

ABSTRACT

Systems, methods, and media are disclosed for tracking viewability of content, such as Internet content, by associating a color-changing animated image file with the content and determining, based on whether color of an image is changing, whether the content is in a viewable region of a browser.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/836,700, filed Mar. 13, 2013, which claims the benefit of U.S.Provisional Application No. 61/735,530, filed Dec. 10, 2012, each ofwhich is hereby incorporated herein by reference in its entirety.

This application is also related to U.S. patent application Ser. No.13/614,878, filed Sep. 13, 2012, which claims the benefit of U.S.Provisional Patent Application No. 61/534,249, filed Sep. 13, 2011, U.S.Provisional Patent Application No. 61/585,317, filed Jan. 11, 2012, andU.S. Provisional Patent Application No. 61/594,311, filed Feb. 2, 2012,which are hereby incorporated by reference herein in their entireties.

TECHNICAL FIELD

In accordance with some embodiments, systems, methods, and media fordetecting content viewability are provided.

BACKGROUND

Media content, including advertising content, is created with the goalof having the content viewed, listened to, and/or otherwise received bya target audience. The target audience can be, for example, one or moreusers with a set of particular interests or one or more users falling ina particular demographic or psychographic group. However, distributingsuch media content to the desired audience is a difficult process, as isdetermining whether media content that has been distributed has reachedthe desired audience. It is often difficult for brand managers, adnetworks, publishers, advertisers, and/or advertising agencies(collectively referred to herein as “advertisers”) to control and managethe service and/or provision of their advertisements, as well as thetracking of the results.

Several approaches have been proposed that attempt to determine whetheran advertisement has been viewed. For example, a website, advertiser, orother online content owner can measure the number of times that browsersaccess content hosted on one or more servers (e.g., a number of hits bybrowsers). In another example, advertisement tags including HTML orJavaScript code have been provided for placement within a website orother online content in order to determine display of the content,including display of advertisements associated with the content. Theseadvertisement tags can be used to control or track advertisementdelivery. These approaches, however, are frequently limited todetermining whether an advertisement has been served to a browser.

A frequent limiting factor involves content that is rendered onto a pagewithin cross-domain nested iframes or other constructs that limit theenclosed content's ability to determine its relative position within theparent page due to browser “Same Origin Policy” or the like, making itdifficult to determine whether the advertisement has actually appearedin a viewable area on a browser application. To overcome this obstacle,technology has been created which does not access the Document ObjectModel (DOM) of the parent to deduce whether an object is viewable withina user's browser. In one example, certain browsers expose coordinateinformation that can be accessed via scripting to determine viewability.However, this approach is only available in a small subset of browsers.In yet another example, FLASH-based monitoring code has been providedfor placement within a website in order to monitor advertisementviewability, using the frame rate or other optimizations within FLASHthat change depending on whether the FLASH object is on- or off-screenas a proxy for determining viewability. However, this approach hassignificant limitations, such as requiring that the browser or devicerunning the browser support FLASH, a component that is not supported inmany leading commercial browsers and/or operating systems. Further, thisapproach involves placing FLASH content within cross-domain iframes,which may violate advertiser or publisher guidelines.

Therefore, there is a need in the art for approaches for controlling andmanaging the distribution and tracking of advertisements for publicationon webpages and/or web sites. Accordingly, it is desirable to providemethods, systems, and media that overcome these and other deficienciesof the prior art.

SUMMARY

In accordance with some embodiments of the disclosed subject matter,systems, methods, and media for detecting content viewability areprovided.

In some embodiments, systems, methods, and media are provided that allowadvertisers to detect content viewability using files having certainstate-changing characteristics, such as animated image files. Inaccordance with some embodiments, a method for detecting contentviewability is provided, the method comprising: receiving a request toserve an advertisement on a webpage; causing an advertisement tag to bedisplayed along with the advertisement in response to receiving therequest, wherein the advertisement tag comprises, links to, or otherwisecalls to be rendered an animated image file, such as an animated pixelfile, that changes between a plurality of characteristic states, such ascolors; and determining whether the advertisement has been or is in viewby detecting one of the plurality of states (e.g., colors) emitted by orembodied by the animated image file.

In some embodiments, a method for detecting content viewability isprovided, the method comprising: receiving a request to serve aplurality of advertisements on a webpage; assigning an advertisement tagto each of the plurality of advertisements, wherein the advertisementtag comprises an animated image file that changes between a sequence ofcolors or other characteristics; causing the advertisement tag to bedisplayed proximal to each of the plurality of advertisements, whereineach color or other characteristic in a sequence of colors orcharacteristics is displayed at a given time; and determining whether atleast one of the plurality of advertisements has been or is in viewbased on the color or other characteristic emitted or embodied by theanimated image file.

In some embodiments, a method for detecting content viewability isprovided, the method comprising: receiving a request to provide content;retrieving the content from a source based on the received request;dividing the retrieved content into a plurality of portions of content;inserting an animated file that includes a plurality of colors or othercharacteristics adjacent to each of the plurality of portions, whereinthe animated file rotates between the plurality of colors or states atpredetermined time intervals; determining a color or other state of theplurality of colors or states from the animation that is currently beingdisplayed in the browser window; and determining which of the pluralityof portions of content is being displayed in the browser window based onthe determined color from the animated file.

In some embodiments, a method for detecting content viewability isprovided, the method comprising: causing an animated image file to beincluded in content intended for publication, the image file changingbetween a plurality of characteristic states, such as colors; anddetermining whether the content has been or is in view by detecting oneof the plurality of states (e.g., colors) emitted by or embodied by theanimated image file.

In some embodiments, a method for detecting content viewability isprovided, the method comprising: receiving a request for tracking codeassociated with an advertisement for publication, wherein the trackingcode is configured to place an animated image file along with theadvertisement and to collect information relating to the animated imagefile; and, in response to serving the advertisement, receiving thecollected information relating to the animated image file, wherein thecollected information includes detecting one of a plurality of states(e.g., colors) emitted by or embodied by the animated image file.

BRIEF DESCRIPTION OF THE FIGURES

The above and other objects and advantages of the invention will beapparent upon consideration of the following detailed description, takenin conjunction with the accompanying drawings, in which like referencecharacters refer to like parts throughout, and in which:

FIG. 1 is a diagram of an illustrative process for detecting contentviewability using a content viewability application in accordance withsome embodiments of the disclosed subject matter.

FIG. 2 is a diagram of an illustrative process for transmitting contentwith an advertisement link for use in detecting content viewability inaccordance with some embodiments of the disclosed subject matter.

FIG. 3 is a diagram of an illustrative process for transmitting anadvertisement to a computing device with a link to tracking code for usein detecting content viewability in accordance with some embodiments ofthe disclosed subject matter.

FIG. 4 is a diagram of an illustrative process for transmitting trackingcode and an animated image file for use in detecting content viewabilityin accordance with some embodiments of the disclosed subject matter.

FIG. 5 is a diagram of an illustrative process for receiving informationregarding content viewability for use in detecting content viewabilityin accordance with some embodiments of the disclosed subject matter.

FIGS. 6A-6C show illustrative examples of a user using a browser windowhaving a viewport to view a webpage (having the URL “example.com”),where three scroll actions on the webpage are shown, in accordance withsome embodiments of the disclosed subject matter.

FIG. 7 is a diagram of an illustrative process for detecting contentviewability using tracking code in accordance with some embodiments ofthe disclosed subject matter.

FIG. 8 is a diagram of an illustrative system on which mechanisms fordetecting content viewability can be implemented in accordance with someembodiments of the disclosed subject matter.

FIG. 9 is a diagram of an illustrative process flow for placing anadvertisement and detecting viewability of the advertisement inaccordance with some embodiments of the disclosed subject matter.

FIG. 10 is a diagram of an illustrative computing device and server asprovided, for example, in FIG. 8 in accordance with some embodiments ofthe disclosed subject matter.

DETAILED DESCRIPTION

Generally speaking, mechanisms for detecting content viewability areprovided. For example, in some embodiments, these mechanisms can be usedto provide an animated image file that is associated with content or aportion of content, such as an advertisement on a webpage. The animatedimage file can include a sequence of colors, where each color isdisplayed at a given time interval. By monitoring one or more animatedimage files for a given webpage, the mechanisms can be used to determinewhether the content (or portion of content) was in view or is in view,and the amount of time that the content was in view. It should be notedthat, when the animated image file is displayed in a browser window, theanimated image file is animated (e.g., the sequence of colors is playedback). On the other hand, when the animated image file is not displayedin the browser window (e.g., because the browser scrolled away, becausethe animated image file is not in view, etc.), the animated image fileceases to animate in some currently available browsers.

It is noted that while color is an example of a characteristic of ananimated image file that can be changed and detected at differentsampling times, other suitable characteristics can be detected, such aspatterns or symbols of collections of pixels (e.g., as used in QR codesor bar codes), or the like, including files or objects that cyclebetween “on” and “off” binary states or “zero” and “one” binary states.Also, while animated image files that change colors are one example ofcontent in which the state of the content can be straightforwardlydetected, other types of files or content that change state, which caninclude dynamic text and/or changing symbolic content, can be used inalternative embodiments. References to color changes throughout thisdisclosure should be understood to encompass, as context permits, othersuch state changes, and references to animated image files should beunderstood to encompass, as context permits, other state-changing filesor objects.

In some embodiments, the animated image file is a single pixel (1×1pixel) animated GIF (sometimes referred to as Graphics InterchangeFormat) that is associated with content, such as an advertisement.Alternatively, the animated image file can be placed at particularbrowser coordinates to determine whether content displayed at or aroundsuch coordinates has appeared in the browser window. The animated imagefile can include multiple colors that rotate through a particularsequence. Any suitable number of colors can be included that can changein any suitable sequence. For example, the animated image file canrotate through four colors every second—e.g., a rotation between a bluecolor, a red color, a green color, and a yellow color each second. Asanother example, the animated image filed can progress through 256colors over a specified time period—e.g. a progression through 256colors in which the color changes twice per second (or any othersuitable number of changes). By monitoring the animated image file andthe color or sequence of colors of the animated image file, themechanisms can determine whether the content has been viewed (e.g., bydetecting the animated image file itself), determine when the contenthas been viewed (e.g., by detecting the color of the animated imagefile), determine how long the content has been viewed (e.g., bymonitoring the particular sequence of colors of the animated imagefile), determine whether certain pieces of content in a browser windoware viewed more than other pieces of content, determine which pieces ofcontent in a browser window have not been viewed (e.g., by determiningthat particular animated image files did not animate), etc.

In a more particular example, in response to receiving a request from aweb browsing application to retrieve an advertisement, a contentviewability application can intercept or redirect an advertisement callfrom a browser such that an advertisement tag in the form of an animatedimage file (e.g., a 1×1 pixel GIF) is assigned to the requestedadvertisement. As described above, the animated image file can berendered along with the advertisement, where the animated image file isanimated when within the browser window and where the animation caninclude changing between a plurality of colors. The content viewabilityapplication can determine whether the advertisement has been viewed oris in view by detecting one of the plurality of colors emitted by theanimated image file. Alternatively, the content viewability applicationcan determine the length of time that the advertisement has been viewedby monitoring the sequence of colors emitted by the animated image file.

It should be noted that, although some embodiments described hereinrefer to one advertisement and one advertisement tag in the form of ananimated image file associated with the advertisement, this is merelyillustrative. Multiple advertisement tags can be generated, where eachadvertisement tag is associated with a particular piece of content(e.g., a portion of content on a webpage, an upper portion of a longadvertisement, etc.). By monitoring the multiple advertisement tags, thecontent viewability application can determine whether certain pieces ofcontent in a browser window are viewed longer than other pieces ofcontent, determine which pieces of content in a browser window have notbeen viewed (e.g., by determining which animated image files did notanimate), etc.

In another more particular example, in response to receiving a requestfrom a browser application to access a particular website or webpage,the content viewability application can receive the content forpresenting to the browser. The content viewability application candivide the content into multiple portions. It should be noted that anysuitable approach for dividing the content can be used. For example, thecontent viewability application can separate the content intoparagraphs. In another example, the content viewability application canseparate the content into portions based on the total amount of content(e.g., number of words, number of paragraphs, length in the particularbrowser window, etc.).

Upon dividing the content into multiple portions, the contentviewability application can place a tag in the form of an animated imagefile adjacent to (or within) each portion of content. For example, insome embodiments, the animated image file is a 1×1 pixel animation thatis placed at particular browser coordinates. The content viewabilityapplication can provide an animated image file that animates in responseto being displayed within the browser window (e.g., is in-view). Forexample, the animated image file can cause the 1×1 pixel animation torotate between multiple colors in a particular sequence—e.g., a rotationbetween a blue color, a red color, a green color, and a yellow coloreach second. In such an example, animation of the animated image filecan be inhibited in response to being out of view, based on the positionin the browser window (or outside the browser window).

In response to placing the animated image file(s) adjacent to contentfor presentation to the browser, the content viewability application canmonitor the animated image files. For example, the content viewabilityapplication can monitor the placed animations and determine the color ofthe 1×1 pixel animations. In another example, the content viewabilityapplication can determine which animated image files are displayed inthe browser viewport and retrieve the color provided by those animationsin the browser viewport at the specified browser coordinates.

In response to detecting the color provided by one or more animations,the content viewability application can determine the content associatedwith the detected color and the detected animation. This can be used,for example, to determine which content is viewed by the browser in thebrowser application. In another example, by monitoring the color ofmultiple animated image files, the content viewability application candetermine which content (e.g., web content, advertisements, etc.) hasbeen viewed during a browsing session. In yet another example, bymonitoring the color of multiple animated image files, the contentviewability application can determine which content has been displayedin a browser viewport.

Referring now to FIG. 1 , an example 100 of a process for detectingcontent viewability is shown in accordance with some embodiments of thedisclosed subject matter. At 102, an application (e.g., a browserapplication, an email application, a content delivery application, etc.)running on a computing device (e.g., a personal computer, a laptopcomputer, a tablet computer, a smartphone, etc.) can transmit a requestfor content to a remote location (e.g., a publisher server, a cloudserver, etc.). In some embodiments, the content can include a webpage, avideo, an email, a file such as a text file, or the like, or anysuitable combination thereof. Such a request can be initiated by, forexample, entering a Uniform Resource Locator (URL) into a browser (orany other type of Uniform Resource Identifier), selecting a link fromanother document, selecting an item of content from a menu, etc. Itshould be noted that, although a browser application is used as anexample of an application for executing process 100 hereinbelow, it isunderstood that any suitable application can execute process 100.

At 104, the browser application can receive the requested content with alink to an advertisement included with the received content. Forexample, in some embodiments, if the browser application requests awebpage corresponding to a particular URL, the request can be sent to apublisher server that stores instructions for rendering the webpage. Insuch an example, the webpage can include instructions (which may bereferred to herein as a link to an advertisement) that cause the browserapplication to request an advertisement to be placed within the webpageat one or more specified locations. Such a location can be an iframe ofa particular size at a particular location within the webpage, in someembodiments. Additionally or alternatively, a location for anadvertisement can be specified using any suitable technique(s), such asby indicating coordinates and a size of the advertisement to berendered, specifying a link to an advertisement to be rendered atparticular coordinates, providing a frame at a particular location thatrestricts access to a parent domain (e.g., the content received at 104,such as a domain of a webpage).

In some embodiments, the requested content can be transmitted to acomputing device running the browser application from a publisher serverin accordance with techniques described below in connection with FIG. 2.

Additionally or alternatively, tracking code can be included in thecontent in some embodiments. For example, tracking code can be includedat various locations within the content to determine if those locationswere viewed by a user of an application used to present content. Forinstance, links to tracking code can be included at various locations inan email sent to a user of an email application, such that a sender ofthe email can determine whether certain portions of the email have beenviewed by a user of the email application. This can allow a sender ofthe email to determine if their email is being read by a user or whetherthe email has been ignored.

In some embodiments, the user of the browser application or any othersuitable application (e.g., an email application) can be provided withan opportunity to control whether these applications can includetracking code or any other suitable code for detecting contentviewability that is used to collect user information (e.g., informationabout content accessed by the user, information about a user'sinteractions with content, information about advertisements viewed bythe user, etc.).

At 106, the browser application can transmit an advertisement call to aremote location (e.g., an advertising server, a demand side platform, areal-time bidding exchange server, etc.) in response to a link to anadvertisement contained in the content. In some embodiments, such anadvertising call can include parameters relating to the content, such asthe size of the advertisement, information regarding whether theadvertisement is considered by the publisher of the content to beabove-the-fold, information regarding a browsing history of the browser,demographic or psychographic characteristics of a user, etc.

At 108, the browser application can receive an advertisement including alink to tracking code (e.g., instructions to request and load trackingcode). Such an advertisement can include any suitable content, such asimages, text, video, sound, animation, etc., as well as links to othercontent.

In some embodiments, the received advertisement can be transmitted tothe computing device running the browser application from anadvertisement server in accordance with techniques described below inconnection with FIG. 3 .

At 110, the browser application can load the advertisement and transmita call for tracking code to a remote location in response to executingthe link to the tracking code. The advertisement can be loaded using anysuitable techniques. For example, in some embodiments, the advertisementcan be loaded from a domain of the advertisement server that transmittedthe advertisement. As another example, the advertisement can be loadedfrom multiple domains indicated by the advertisement, such as, onedomain for text and/or images and another domain for sound and/or video.

In some embodiments, the call for tracking code can be transmitted inresponse to a link to tracking code embedded within the advertisementreceived at 108. For example, in some embodiments, the link to trackingcode can include a URL, JavaScript, HTML, any other suitable code thatcauses the browser to request the tracking code, or any suitablecombination thereof.

In some embodiments, the call for tracking code can be transmitted toany suitable location. For example, in some embodiments, the call fortracking code can be transmitted to a location (e.g., an InternetProtocol (IP) address) of a tracking code server. As another example,the tracking code call can be transmitted to a URL that can redirect thecall to an appropriate server.

In some embodiments, the call for tracking code can include anidentification of a type of browser transmitting the call (e.g., whetherthe browser is a full browser or a mobile browser, a version of thebrowser, the underlying technology used to power the browser such as alayout engine used, a brand of browser such as GOOGLE CHROME, MICROSOFTEXPLORER, of any other suitable browser information).

At 112, the browser application can receive tracking code and ananimated image file. The tracking code can be implemented using anysuitable techniques. For example, the tracking code can includeJavaScript that tracks one or more states and/or characteristics of ananimated image file at one or more points in time. As another example,the tracking code can include a Java applet that tracks one or morestates and/or characteristics of an animated image file at one or morepoints in time. As yet another example, the tracking code can includeHTML code that tracks one or more states and/or characteristics of ananimated image file at one or more points in time.

In some embodiments, the animated image file can include a GIF imagefile configured to rotate through various states based on time. Forexample, as described above, the animated image file can include a 1×1pixel GIF that is configured to display multiple colors over time. Forinstance, as described above, a 1×1 pixel GIF can be configured torotate through four colors every second.

In many current browser applications, when a GIF image file configuredto rotate or progress through different frames or states is locatedoutside of a current viewing area (e.g., outside of a viewport)presented by the browser application, the browser application does notanimate the GIF. For example, in response to the user of the browserapplication navigating such that the GIF image is within the currentviewing area, the browser application can animate or progress throughvarious states of the GIF image file. In this example, if the user ofthe browser application navigates such that the GIF image is not withinthe current viewing area, the browser application can inhibit the GIFimage file from animating or progressing through various states. Uponnavigating such that the GIF image file returns to the current viewingarea, the browser application can continue to animate the GIF image fileor progress the GIF image file through various states (e.g., the browserapplication can continue from the previous point where the GIF imagefile was animated, the browser application can jump to a different pointin the GIF image file based on the amount of time that has elapsed,etc.).

In some embodiments, tracking code received by the browser applicationat 112 can be based on browser information transmitted at 110. Forexample, different browser applications may behave differently and atype of tracking code received at 112 can be based on the anticipatedbehavior of the browser application based on the information received at110. Additionally, if it is determined that a browser that requested thetracking code at 110 is incompatible with the mechanisms described here,process 100 can end in some embodiments without the browser applicationreceiving tracking code at 112.

In some embodiments, the received tracking code and animated image filecan be transmitted to the computing device running the browserapplication from a tracking code server in accordance with techniquesdescribed below in connection with FIG. 4

At 114, the browser application can cause the tracking code to run andcan load the animated image file. The tracking code can be run (e.g.,executed) using any suitable techniques. For example, in someembodiments, the browser application itself can run the tracking code(e.g., the tracking code includes code, such as code included in anapplet, that the browser application is configured to execute).Additionally or alternatively, the tracking code can be executed inconnection with the browser application by a separate application, suchas a browser plug-in or a browser add-on (e.g., the tracking codeincludes code, such as code included in an applet, that the browserapplication is not configured to execute).

Similarly, the animated image file can be loaded using any suitabletechniques. For example, in some embodiments, the browser applicationitself can load the animated image file (e.g., the animated image fileis in a format that the browser application is configured to load).Additionally or alternatively, the animated image file can be loaded inconnection with the browser application by a separate application, suchas a browser plug-in or a browser add-on (e.g., the animated image fileis in a format that the browser is not configured to load).

In some embodiments, the tracking code can periodically determine thestate of the animated image file. For example, the tracking code canperiodically determine a color of the animated image file (e.g., whetherthe state of the animated file is currently red, blue, green, yellow,etc.). In such an example, the tracking code can store a record of thecolors determined at periodic times in any suitable location, such asthe browser application's cache.

At 116, the browser application can cause a report to be transmitted toa remote location. Such a report can include any suitable informationrecorded by the tracking code, such as, whether the animated image filewas ever in view, how long the animated image file was in view, aproportion of the time that the animated image file was in view, or anyother suitable information regarding the animated image file. In someembodiments, such a report can also indicate an identification of anadvertisement associated with the animated image file and/or a locationof the animated image in relation to the associated advertisement (e.g.,where the animated image file was loaded with respect to theadvertisement, such as top-left, bottom-right, etc.). A location of theanimated file in relation to the advertisement can be based oncoordinates of the advertisement, coordinates of a frame (e.g., aniframe) that the advertisement is loaded within, coordinates of adocument, such as a webpage, etc.

In some embodiments, the report transmitted at 116 can be received by adata server as described below in connection with FIG. 5 . Additionallyor alternatively, the report transmitted at 116 can be transmitted toany suitable location such as a tracking code server that transmittedthe tracking code to the browser application.

As described herein, in some embodiments, a user of the browserapplication or any other suitable application can be provided with anopportunity to control the information recorded and transmitted by thetracking code or any other suitable code for detecting contentviewability that is used to collect user information.

Turning to FIG. 2 , an example 200 of a process for transmitting contentwith a link to advertising is shown in accordance with some embodimentsof the disclosed subject matter. At 202, a content serving applicationcan receive a request for content from an application running on acomputing device. For example, the request for content can be receivedfrom a browser application running on a computing device, such as apersonal computer, a laptop computer, a tablet computer, a smartphone, agame console, etc. As another example, the request for content can bereceived from a special purpose application running on a computingdevice, such as an email application, a media playback application, orany other suitable application for presenting content to a user.

In some embodiments, the content serving application can execute on apublisher server that stores content associated with a particularlocation, such as a URL, an IP address, etc.

A request received at 202 can be a request for any suitable content. Forexample, the request can be a request for a webpage, a file, a video,text, an image, any other suitable type of content, or any suitablecombination thereof. In such an example, the content can includereferences and/or links to other content, such as advertisements.

At 204, the content serving application can transmit the requestedcontent (e.g., a webpage) with a link to an advertisement in response tothe request received at 202. It should be noted that the link to anadvertisement can include any suitable advertisement call. For example,in some embodiments, the link to an advertisement can include a redirectthat causes a browser application to request an advertisement from anysuitable advertisement source, such as, an advertisement server, ademand side platform, a real-time bidding exchange, an advertisingnetwork, etc. As another example, the link to an advertisement cancontain a URL, an IP address, etc.

Additionally or alternatively, the content transmitted by the contentserving application can include advertisements, tracking code, and/orone or more animated image files in addition to or in place of one ormore links to advertisements. For example, a webpage can be transmittedthat includes both advertisements and links to advertisements. Asanother example, tracking code and an animated image file can beincluded in the content to facilitate tracking of whether a portion ofthe content is viewed.

At 206, the device that requested the content (e.g., a personalcomputer, a laptop computer, a tablet computer, a smartphone, a smarttelevision, etc.) can be caused to transmit a request for anadvertisement to a remote location (e.g., transmit an advertisement callto a remote location). As described above, such a request can be made toany suitable location, such as an advertisement server, a demand sideplatform, etc. In some embodiments, the advertisement call can includeredirect or intercept instructions that can cause the advertisement callto be sent to a first location where tracking code, a link to trackingcode, an animated image file, and/or a link to an animated image filecan be inserted into the advertisement call. Redirection features arefurther described, for example, in commonly owned, commonly assignedU.S. Patent Application Publication No. 2011/0106634, which is herebyincorporated by reference herein in its entirety.

FIG. 3 shows an example 300 of a process for transmitting anadvertisement with a link to tracking code in accordance with someembodiments of the disclosed subject matter. At 302, an advertisementserving application can receive an advertisement call from anapplication running on a computing device. For example, the request forcontent can be received from a browser application running on acomputing device, such as a personal computer, a laptop computer, atablet computer, a smartphone, a game console, etc. As another example,the request for content can be received from a special purposeapplication running on a computing device, such as an email application,a media playback application, or any suitable application for presentingcontent to a user.

In some embodiments, the advertisement serving application can executeon an advertisement server that stores advertisements associated with aparticular advertiser and/or group of advertisers. Such advertisementscan be stored and/or categorized using any suitable techniques, such as,based on a target demographic, by advertiser, etc. As described above inconnection with FIG. 2 , an advertisement call can be intercepted orredirected to a different location prior to being received at anadvertisement server at 302. For example, an advertisement call can beintercepted at a remote location where a link to tracking code, trackingcode, a link to an animated image file, and/or an animated image filecan be inserted into the advertisement call.

As another example, an advertisement call can be directed to a real-timebidding application that carries out a real-time bidding process fordetermining an advertisement to transmit to a computing device thattransmitted the advertisement call. Additionally or alternatively, anadvertisement call can be directed to a demand side platform, anadvertising network, etc. to determine an advertisement to be placed inresponse to an advertisement call.

In some embodiments, any suitable techniques can be used to determine aparticular advertisement to transmit to the computing device thattransmitted the advertisement call received at 302. For example, in someembodiments, the advertisement call can specify a particularadvertisement to transmit in response to the advertisement call. Asanother example, a real-time bidding application can be used todetermine an advertisement to transmit in response to the advertisementcall. As yet another example, a demand side platform can be used todetermine an advertisement to transmit in response to the advertisementcall. As still another example, an advertising network can be used todetermine an advertisement to transmit in response to the advertisementcall. As a further example, any suitable combination of techniques canbe used to determine an advertisement to transmit in response to theadvertisement call.

At 304, the advertisement serving application can transmit anadvertisement with a link to tracking code in response to the requestreceived at 302. As described above, an advertisement transmitted at 304can be selected using any suitable techniques.

Additionally or alternatively, the advertisement serving application cantransmit tracking code and/or an animated image file(s) with theadvertisement at 304 in addition to or in place of the link to trackingcode. For example, as described above, tracking code and/or an animatedimage file can be inserted into the advertising call with an instructionto an advertisement serving application to pass the tracking code and/orthe animated image file with the advertisement.

In some embodiments, any suitable techniques can be used to provide alink to tracking code. For example, in some embodiments, the link totracking code can include a URL, IP address, etc., of a location fromwhich to download tracking code. In such an example, the link totracking code can include code that instructs a browser, a browserplug-in, a browser add-on, or a specialized application to requesttracking code from a particular location, and instructions to run thetracking code when the tracking code has been downloaded from theparticular location.

At 306, the device that requested the content (e.g., a personalcomputer, a laptop computer, a tablet computer, a smartphone, a smarttelevision, etc.) can be caused to transmit a request for tracking codeto a remote location (e.g., transmit an call for tracking code to aremote location). As described above, such a request can be made to anysuitable location, such as a tracking code server.

FIG. 4 shows an example 400 of a process for transmitting tracking codeand an animated image file in accordance with some embodiments. At 402,a tracking code serving application can receive a request for trackingcode from an application running on a computing device. For example, therequest for content can be received from a browser application runningon a computing device, such as a personal computer, a laptop computer, atablet computer, a smartphone, a game console, etc. As another example,the request for content can be received from a special purposeapplication running on a computing device, such as an email application,a media playback application, or any suitable application for presentingcontent to a user.

In some embodiments, the tracking code serving application can executeon a tracking code server that stores tracking code and/or animatedimage files. For example, the tracking code serving application canexecute on a server where it accepts requests for tracking code andtransmits tracking code in response to receiving a request for trackingcode.

At 404, the tracking code serving application can transmit tracking codeand/or an animated image file in response to receiving a request fortracking code at 402. It should be noted that the tracking code servingapplication can be associated with multiple different versions oftracking code that can each be configured to track an animated imagefile using different tracking techniques and/or different combinationsof tracking techniques. For example, different versions of tracking codecan be configured to track different animated image files with variousdifferent properties, such as, a different number of colors displayed,an image file that displays different symbols rather than differentcolors, a monochromatic version, a binary version, etc. As anotherexample, different versions of tracking code can be configured to trackan animated image file using different techniques, such as, trackingwhether an animated image file was in view, tracking how long ananimated image file was in view, tracking changes in an animated imagefile more or less frequently (e.g., based on a type of content), etc. Asyet another example, different versions of tracking code can beconfigured to operate based on different browser specifications.

Additionally or alternatively, the tracking code serving application canbe associated with a single version of tracking code and a differenttracking code serving application can be associated with a differentversion of tracking code.

At 406, the device that requested the content (e.g., a personalcomputer, a laptop computer, a tablet computer, a smartphone, a smarttelevision, etc.) can be caused to load and run the tracking code and toload an animated image file associated with the tracking code. Asdescribed above, the animated image file can be loaded in associationwith an advertisement requested by a computing device. As describedabove, tracking a state of an animated image file that is loaded inassociation with an advertisement using tracking code can allow for theviewability of the advertisement to be determined.

Turning to FIG. 5 , an example 500 of a process for receiving reportedinformation is shown in accordance with some embodiments. At 502, aninformation receiving application can receive a report from a computingdevice running tracking code (or that ran tracking code). The report cancontain information collected by the tracking code regarding the stateof an animated image file or the like. For example, in some embodiments,the report can contain information regarding whether the animated imagefile animated (e.g., whether the animated image file was ever in view),how long the animated image file animated, or any other suitableinformation regarding the animated image file. As another example, thereport can contain information regarding a type of browser applicationwhich rendered the animated image file, which can be used ininterpreting the information regarding the rendering of the animatedimage file, as certain browser applications may treat the animated imagefile differently (e.g., a first browser application may render theanimated image file only when the image file is within the viewport, asecond browser application may render the animated image file when itfirst appears in the viewport and continue rendering the animated imagefile until an unload of a page containing the animated image file,etc.).

In some embodiments, the report can include information regarding anadvertisement that the tracking code is associated with. For example, anidentification of an advertisement and/or advertiser can be included inthe report. As another example, an identification of a URL (e.g., aparent domain) where the advertisement appeared can be included in thereport. As another example, a location on a webpage where theadvertisement appeared and/or or a location where the advertisement wassupposed to appear (e.g., above the fold, below the fold, coordinateswithin a web site, etc.).

In some embodiments, the information receiving application can executeon a data server that stores information received in reports fromtracking code, among other things. For example, the informationreceiving application can execute on a server where it accepts reportssent from computing devices running tracking code (or that ran trackingcode).

At 504, the information receiving application can compile informationreceived in the report at 502 with information received in otherreports. Such information can be organized in any suitable manner. Forexample, in some embodiments, the information can be organized based onan identification of an advertisement associated with the tracking code.As another example, the information can be organized based on anidentification of an advertising campaign that includes an advertisementassociated with the tracking code. As yet another example, theinformation can be organized based on a location where the advertisementappeared (e.g., an identification of a URL or IP address where theadvertisement).

At 506, the information receiving application can transmit theinformation that was collected and/or compiled to advertisers inresponse to a request for information regarding the visibility of anadvertisement. In some embodiments, the information receivingapplication can be executed by an advertisement server and/or can be incommunication with an advertisement server to distribute informationregarding advertisement viewability to advertisers. Advertisementviewability metrics and techniques for communicating advertisementviewability are further described, for example, in commonly owned,commonly assigned U.S. patent application Ser. No. 13/614,878, which ishereby incorporated herein by reference in its entirety.

FIG. 6A shows an example of a user, User A, using a browser windowhaving a viewport 602 to view a webpage 604 (having URL “example.com”),where three scroll actions on webpage 604 are shown in the example. Anadvertisement 606 is loaded in webpage 604 with an included animatedimage file 608. It should be noted that animated image file 608 is notshown in the FIG. 6A at actual size, but instead is representative of apossible location where an animated image file can be loaded inassociation with an advertisement. As described above, animated imagefile 608 can include a 1×1 pixel GIF that is configured to rotatethrough multiple colors (e.g., four colors every one second).

In this example, advertisement 606 is “above the fold,” where the foldis represented by line 610. Event 1 shows that viewport 602 is alignedwith the top of webpage 604, event 2 shows that the user has scrolled toa lower portion of webpage 604, and event 3 shows that the user hasreturned to a higher portion of webpage 604 (but not to the top ofwebpage 604). In each of these events, it should be noted thatadvertisement 606 and animated image file 608 appear within viewport602.

In such an example, a browser application rendering webpage 604 cananimate animated image file 608 the entire time that the webpage isloaded in the browser application. For example, the animated image filecan rotate through colors as long as the animated image file remainswithin viewport 602. As another example, the animated image can rotatethrough colors for a particular period of time (e.g., thirty seconds,two minutes, etc.) while animated image file 608 is within viewport 602.Tracking code that is loaded in association with the animated image filecan collect information regarding whether the animated image file isbeing animated by the browser application and/or what color the animatedimage file is at various times. The tracking code can then report on theviewability of advertisement 606 with which animated image file 608 isassociated based on the collected information.

FIG. 6B shows an example of a user, User B, using a browser windowhaving a viewport 612 to view a webpage 614, where three scroll actionson webpage 614 are shown in the example. An advertisement 616 is loadedin webpage 614 with an included animated image file 618. It should benoted that animated image file 618 is not shown in the figures at actualsize, but instead is representative of a possible location where ananimated image file can be loaded in association with an advertisement.As described above, animated image file 618 can include a 1×1 pixel GIFthat is configured to rotate through multiple colors (e.g., four colorsevery one second).

In this example, an advertisement 616 is “below the fold.” Event 1 showsthat the user receives a “below the fold” advertisement 616 that appearsin viewport 612, where the fold is represented by line 620. However,event 2 and event 3 show that a scroll action towards the top of thewebpage causes advertisement 616 to appear outside of viewport 612.

In such an example, a browser application rendering webpage 614 cananimate animated image file 618 during event 1 when animated image file618 is within viewport 616, but inhibit animation of animated image file618 during events 2 and 3 when animated image file 618 is no longerwithin viewport 612. For example, the animated image file can rotatethrough colors as long as the animated image file remains withinviewport 612. As another example, the animated image can rotate throughcolors for a particular period of time (e.g., thirty seconds, twominutes, etc.) while animated image file 618 is within viewport 612.Tracking code that is loaded in association with the animated image filecan collect information regarding whether the animated image file isbeing animated by the browser application, in order to report on theviewability of advertisement 616 with which animated image file 608 isassociated. In this case, the tracking code can transmit a reportindicating that animated image file 608 was viewable during the durationof event 1, but was not in view at other times.

FIG. 6C shows an example of a user, User C, using a browser windowhaving a viewport 622 to view a webpage 624, where three scroll actionson webpage 624 are shown in the example. An advertisement 626 is loadedin webpage 624 with animated image files 628 and 629 included withadvertisement 626. It should be noted that animated image files 628 and629 are not shown in the figures at actual size, but instead arerepresentative of possible locations where animated image files can beloaded in association with an advertisement. As described above,animated image files 628 and 629 can include a 1×1 pixel GIF that isconfigured to rotate through multiple colors (e.g., four colors everyone second).

In this example, an advertisement 626 is “above the fold,” where thefold is represented by line 630. Event 1 shows that viewport 622 isaligned with the top of webpage 624, event 2 shows that the user hasscrolled to a lower portion of webpage 624, and event 3 shows that theuser has scrolled to the bottom of webpage 624. Event 1 is an example ofadvertisement 626 being in view to the user because it is locatedcompletely within viewport 622. Event 2 is an example of advertisement626 being partially in view because part of advertisement 626 is locatedwithin viewport 622, but part of advertisement 626 is located outside ofviewport 622. Event 3 is an example of advertisement 626 being out ofview because no part of advertisement 626 is located within viewport622.

In such an example, a browser application rendering webpage 624 cananimate animated image files 628 and 629 during event 1 when animatedimage files 628 and 629 are within viewport 626. However, during event2, when animated image file 628 is located outside viewport 622 andanimated image file 629 is located inside viewport 622, the browserapplication can animate animated image file 629 and inhibit animation ofanimated image file 628. During event 3 when neither of animated imagefiles 628 and 629 are within viewport 622, the browser application caninhibit animation of both animated image files. For example, theanimated image files 628 and 629 can rotate through colors as long asthe animated image file remains within viewport 622. As another example,the animated image files 628 and 629 can rotate through colors for aparticular period of time (e.g., thirty seconds, two minutes, etc.) aslong as the animated image file remains within viewport 622. Trackingcode that is loaded in association with the animated image file cancollect information regarding whether the animated image files are beinganimated by the browser application, in order to report on theviewability of advertisement 626 with which animated image files 628 and629 are associated. In this case, the tracking code can transmit areport indicating that animated image files 628 and 629 were viewableduring the duration of event 1, animated image file 629 was viewableduring the duration of event 2, and animated image files 628 and 629were neither viewable during the duration of event 3.

It should be noted that the placement of animated image files describedherein are given as examples and animated image files as describedherein can be placed in any suitable location. For example, an animatedimage file can be placed at each corner of an advertisement to determinewhether an entire advertisement is within a viewport. As anotherexample, a one pixel wide border can be provided around an advertisementto determine which portions of an advertisement are within a viewport.Features regarding placements of monitoring pixels for determiningviewability are further described, for example, in commonly owned,commonly assigned U.S. patent application Ser. No. 13/614,878, which ishereby incorporated herein by reference in its entirety.

Turning to FIG. 7 , an example 700 of a process for tracking a state ofan animated image file and reporting the tracked state is shown inaccordance with some embodiments of the disclosed subject matter. At702, tracking code can determine a state of an animated image filecontained within content, such as a webpage. Any suitable state of theanimated image file can be determined by the tracking code. For example,in some embodiments, as described above, a color of the animated imagefile can be determined.

At 704, the tracking code can compare the current state of the animatedimage file determined at 702 to a previously determined state of theanimated image file (or a known initial state of the animated imagefile). For example, the tracking code can compare a current color of theanimated image file to a previous color of the animated image file.

At 706, the tracking code can determine whether there was a change instate between a previously determined state and a current state of theanimated image file. For example, the tracking code can determine if acurrent color of the animated image file is different from a previouscolor of the animated image file.

If the tracking code determines that there was a change in state of theanimated image file (“YES” at 706), process 700 can move to 708 wherethe new state of the animated image file can be recorded. Recording ofthe state of the animated image file can be performed using any suitabletechniques. For example, in some embodiments, the tracking code canrecord a current state of the animated image file in a cache of abrowser that loaded the animated image file. As another example, thetracking code can record a current state of the animated image file in afile designated for temporary storage in a computing device running abrowser application that loaded the animated image file. As yet anotherexample, the tracking code can record a current state of the animatedimage file in any file that the tracking code can access and/or in afile created by the tracking code.

On the other hand, if the tracking code determines that there was a nota change in state of the animated image file (“NO” at 706), process 700can move to 710.

In some embodiments, the tracking code can record a state of theanimated image file regardless of whether there has been a change instate of the animated image file from a previous state. In suchembodiments, the tracking code need not compare the current state of theanimated image file to a previous state at 704, or determine whetherthere has been a change at 706.

At 710, the tracking code can determine whether to report informationregarding the state of the animated image file that has been recorded at708. Any suitable techniques can be used to determine whether to reportthe recorded information. For example, in some embodiments, informationrecorded by the tracking code can be reported periodically (e.g., atpredetermined intervals). As another example, information recorded bythe tracking code can be reported when the content associated with theanimated image file is navigated away from (e.g., when a browser windowwhere the animated image file was loaded is closed, when a user selectsa link to navigate to a different page, when a user closes anapplication that loaded the animated image file, etc.).

Features regarding reporting and timing for carrying out reporting arefurther described, for example, in commonly owned, commonly assignedU.S. patent application Ser. No. 13/614,878, which is herebyincorporated herein by reference in its entirety.

If the tracking code determines that the information recorded on thestate of the animated image file should be reported (“YES” at 710),process 700 can move to 712 and cause a computing device that loaded thetracking code to transmit the recorded information to a remote locationat 712 (e.g., to a data server, a tracking code server, etc.).

Otherwise, if the tracking code determines that the information recordedon the state of the animated image file should not be reported (“NO” at710), process 700 can move to 714.

At 714, the tracking code can determine whether a predetermined amountof time passed since a state of the animated image file was lastdetermined at 702. The predetermined amount of time can include anysuitable amount of time. For example, in some embodiments, thepredetermined amount of time can be based on a period at which theanimated image file rotates or progresses through states. For instance,if the animated image file rotates through four colors every one second,the tracking code can determine a state of the animated image file eighttimes per second (or any other suitable number of times per second).This can allow for changes to the state of the animated image file to bedetermined by checking on a state of the animated image file more oftenthan a period at which the state changes when animated.

If the predetermined amount of time has not passed (“NO” at 714),process 700 can return to 710 to determine whether the recordedinformation should be reported. Otherwise, if the predetermined amountof time has passed (“YES” at 714), process 700 can return to 702 anddetermine a state of the animated image file at 702 and/or whether thestate has changed at 704 and 706.

FIG. 8 shows an example of a generalized schematic diagram of a system800 on which the mechanisms for detecting content viewability describedherein can be implemented as a content viewability application inaccordance with some embodiments. As illustrated, system 800 can includeone or more computing devices 810. Computing devices 810 can be local toeach other or remote from each other. Computing devices 810 can beconnected by one or more communication links 808 to a communicationsnetwork 806 that can be linked via a communication link 806 to a server802.

System 800 can include one or more servers 802. Server 802 can be anysuitable server for providing access to the content viewabilityapplication, such as a processor, a computer, a data processing device,or any suitable combination of such devices. For example, the contentviewability application can be distributed into multiple backendcomponents and multiple frontend components or interfaces. In a moreparticular example, backend components, such as data collection and datadistribution can be performed on one or more servers 802.

More particularly, for example, each of the computing devices 810 andserver 802 can be any of a general purpose device such as a computer ora special purpose device such as a client, a server, etc. Any of thesegeneral or special purpose devices can include any suitable componentssuch as a hardware processor (which can be a microprocessor, digitalsignal processor, a controller, etc.), memory, communication interfaces,display controllers, input devices, etc. For example, computing device810 can be implemented as a personal computer, a smartphone, a tabletcomputer, a personal data assistant (PDA), a multimedia terminal, amobile telephone, a set-top box, a television, a game console, a digitalmedia receiver, etc.

Communications network 806 can be any suitable computer network orcombination of networks including the Internet, an intranet, a wide-areanetwork (“WAN”), a local-area network (“LAN”), a wireless network, adigital subscriber line (“DSL”) network, a frame relay network, anasynchronous transfer mode (“ATM”) network, a virtual private network(“VPN”), etc. Communication links 804 and 808 can be any communicationlinks suitable for communicating data between computing devices 810 andserver 802, such as network links, dial-up links, wireless links,hard-wired links, any other suitable communication links, or anysuitable combination of such links. Computing devices 810 can, forexample, enable a user to load a webpage that causes features of theapplication to be accessed. Computing devices 810 and server 802 can belocated at any suitable location.

FIG. 9 shows an example of a process flow for detecting contentviewability in accordance with various embodiments. In the example ofFIG. 9 , a browser application running on a computing device 810 cansend a request (1) for content from a publisher server 802-1. Forexample, a user can enter a URL or an IP address corresponding to adomain of a content publisher or a specific page within the domain of acontent publisher in an address portion of the browser application. Asanother example, the user can be automatically directed to contentpublisher's server 802-1 by selecting a hyperlink or in response to aredirect from another URL or IP address, or using any other techniquesin which a browser running on a user device can be directed to requestcontent from content publisher's server 802-1.

In response to receiving a request for content from the browserapplication running on computing device 810, publisher server 802-1 candeliver the requested content (2) with link(s) to an advertisement(s)that initiates an advertisement call from the browser application to anadvertisement server 802-2. As described above, the content can includeinstructions that cause the browser application to render the content.The advertisement call can be include in these instructions and cancause the browser application to request an advertisement (3) fromadvertisement server 802-2. In response to the request for anadvertisement, the advertisement server 802-2 returns an advertisement(4) with an embedded link to a tracking code, also referred to herein asthe content viewability application.

The browser application running on computing device 810 can then make acall (5) to a tracking code server 802-3 for the tracking code. Inresponse to the call for tracking code, tracking code server 802-3 canreturn the tracking code (6) with an animated image file (or a link tothe animated image file). As described above, the tracking code caninclude JavaScript that loads an animated image file within the contentand collects information about the animated image file. For example, thetracking code can determine whether the advertisement has been viewed oris in view by detecting one of a plurality of colors specified by theanimated image file, if the image file is currently animating, how manytimes a sequence of colors was specified by the animated image file, orthe like.

The tracking code can cause computing device 810 to report (7) thecollected information to a data server 802-4, which can collectinformation from various tracking codes and combine that information foruse in making advertising decisions, evaluating advertising viewability,etc. Additionally or alternatively, the collected information can bereported back to tracking code server 802-3, or any other suitablelocation.

FIG. 10 shows an example of system 800 where the server and one of thecomputing devices depicted in FIG. 8 are illustrated in more detail.Referring to FIG. 10 , user device 810 can include a processor 1012, adisplay 1014, an input device 1016, and memory 1018, which can beinterconnected. In some embodiments, memory 1018 can include a storagedevice (such as a computer-readable medium) for storing a computerprogram for controlling processor 1012.

Processor 1012 can use the computer program to present on display 1014 abrowser window that loads a webpage with an advertisement and/or otherdata received through communications link 808 and commands and/or valuestransmitted by a user of computing device 810. It should also be notedthat data received through communications link 808 or any othercommunications links can be received from any suitable source. Inputdevice 1016 can be a computer keyboard, a cursor-controller, dial,switchbank, lever, touchscreen, or any other suitable input device.

Server 802 can include processor 1022, display 1024, input device 1026,and memory 1028, which can be interconnected. In some embodiments,memory 1028 can include a storage device for storing data receivedthrough communications link 804 or through other links, and alsoreceives commands and values transmitted by one or more users. Thestorage device can further include a server program for controllingprocessor 1022.

Accordingly, methods, systems, and media for detecting contentviewability are provided.

In some embodiments, any suitable computer readable media can be usedfor storing instructions for performing the processes described herein.For example, in some embodiments, computer readable media can betransitory or non-transitory. For example, non-transitory computerreadable media can include media such as magnetic media (such as harddisks, floppy disks, etc.), optical media (such as compact discs,digital video discs, Blu-ray discs, etc.), semiconductor media (such asflash memory, electrically programmable read only memory (EPROM),electrically erasable programmable read only memory (EEPROM), etc.), anysuitable media that is not fleeting or devoid of any semblance ofpermanence during transmission, and/or any suitable tangible media. Asanother example, transitory computer readable media can include signalson networks, in wires, conductors, optical fibers, circuits, anysuitable media that is fleeting and devoid of any semblance ofpermanence during transmission, and/or any suitable intangible media.

The methods and systems described herein can be deployed in part or inwhole through a machine that executes computer software, program codes,and/or instructions on a processor. The processor can be part of aserver, cloud server, client, network infrastructure, mobile computingplatform, stationary computing platform, or other computing platform. Aprocessor can be any kind of computational or processing device capableof executing program instructions, codes, binary instructions and thelike. The processor can be or include a signal processor, digitalprocessor, embedded processor, microprocessor or any variant such as aco-processor (math co-processor, graphic co-processor, communicationco-processor and the like) and the like that can directly or indirectlyfacilitate execution of program code or program instructions storedthereon. In addition, the processor can enable execution of multipleprograms, threads, and codes. The threads can be executed simultaneouslyto enhance the performance of the processor and to facilitatesimultaneous operations of the application. By way of implementation,methods, program codes, program instructions and the like describedherein can be implemented in one or more thread. The thread can spawnother threads that can have assigned priorities associated with them;the processor can execute these threads based on priority or any otherorder based on instructions provided in the program code. The processorcan include memory that stores methods, codes, instructions and programsas described herein and elsewhere. The processor can access a storagemedium through an interface that can store methods, codes, andinstructions as described herein and elsewhere. The storage mediumassociated with the processor for storing methods, programs, codes,program instructions or other type of instructions capable of beingexecuted by the computing or processing device can include but can notbe limited to one or more of a CD-ROM, DVD, memory, hard disk, flashdrive, RAM, ROM, cache and the like.

A processor can include one or more cores that can enhance speed andperformance of a multiprocessor. In embodiments, the process can be adual core processor, quad core processors, other chip-levelmultiprocessor and the like that combine two or more independent cores(called a die).

The methods and systems described herein can be deployed in part or inwhole through a machine that executes computer software on a server,client, firewall, gateway, hub, router, or other such computer and/ornetworking hardware. The software program can be associated with aserver that can include a file server, print server, domain server,internet server, intranet server and other variants such as secondaryserver, host server, distributed server and the like. The server caninclude one or more of memories, processors, computer readable media,storage media, ports (physical and virtual), communication devices, andinterfaces capable of accessing other servers, clients, machines, anddevices through a wired or a wireless medium, and the like. The methods,programs or codes as described herein and elsewhere can be executed bythe server. In addition, other devices required for execution of methodsas described in this application can be considered as a part of theinfrastructure associated with the server.

The server can provide an interface to other devices including, withoutlimitation, clients, other servers, printers, database servers, printservers, file servers, communication servers, distributed servers,social networks, and the like. Additionally, this coupling and/orconnection can facilitate remote execution of program across thenetwork. The networking of some or all of these devices can facilitateparallel processing of a program or method at one or more locationwithout deviating from the scope of the invention. In addition, any ofthe devices attached to the server through an interface can include atleast one storage medium capable of storing methods, programs, codeand/or instructions. A central repository can provide programinstructions to be executed on different devices. In thisimplementation, the remote repository can act as a storage medium forprogram code, instructions, and programs.

The software program can be associated with a client that can include afile client, print client, domain client, internet client, intranetclient and other variants such as secondary client, host client,distributed client and the like. The client can include one or more ofmemories, processors, computer readable media, storage media, ports(physical and virtual), communication devices, and interfaces capable ofaccessing other clients, servers, machines, and devices through a wiredor a wireless medium, and the like. The methods, programs or codes asdescribed herein and elsewhere can be executed by the client. Inaddition, other devices required for execution of methods as describedin this application can be considered as a part of the infrastructureassociated with the client.

The client can provide an interface to other devices including, withoutlimitation, servers, cloud servers, other clients, printers, databaseservers, print servers, file servers, communication servers, distributedservers and the like. Additionally, this coupling and/or connection canfacilitate remote execution of program across the network. Thenetworking of some or all of these devices can facilitate parallelprocessing of a program or method at one or more location withoutdeviating from the scope of the invention. In addition, any of thedevices attached to the client through an interface can include at leastone storage medium capable of storing methods, programs, applications,code and/or instructions. A central repository can provide programinstructions to be executed on different devices. In thisimplementation, the remote repository can act as a storage medium forprogram code, instructions, and programs.

The methods and systems described herein can be deployed in part or inwhole through network infrastructures. The network infrastructure caninclude elements such as computing devices, servers, cloud servers,routers, hubs, firewalls, clients, personal computers, communicationdevices, routing devices and other active and passive devices, modulesand/or components as known in the art. The computing and/ornon-computing device(s) associated with the network infrastructure caninclude, apart from other components, a storage medium such as flashmemory, buffer, stack, RAM, ROM and the like. The processes, methods,program codes, instructions described herein and elsewhere can beexecuted by one or more of the network infrastructural elements.

The methods, program codes, and instructions described herein andelsewhere can be implemented on a cellular network having multiplecells. The cellular network can either be frequency division multipleaccess (FDMA) network or code division multiple access (CDMA) network.The cellular network can include mobile devices, cell sites, basestations, repeaters, antennas, towers, and the like. The cell networkcan be a GSM, GPRS, 3G, EVDO, LTE, mesh, or other networks types.

The methods, programs codes, and instructions described herein andelsewhere can be implemented on or through mobile devices. The mobiledevices can include navigation devices, cell phones, mobile phones,mobile personal digital assistants, laptops, palmtops, netbooks, pagers,electronic books readers, music players and the like. These devices caninclude, apart from other components, a storage medium such as a flashmemory, buffer, RAM, ROM and one or more computing devices. Thecomputing devices associated with mobile devices can be enabled toexecute program codes, methods, and instructions stored thereon.Alternatively, the mobile devices can be configured to executeinstructions in collaboration with other devices. The mobile devices cancommunicate with base stations interfaced with servers and configured toexecute program codes. The mobile devices can communicate on a peer topeer network, mesh network, or other communications network. The programcode can be stored on the storage medium associated with the server andexecuted by a computing device embedded within the server. The basestation can include a computing device and a storage medium. The storagedevice can store program codes and instructions executed by thecomputing devices associated with the base station.

The computer software, program codes, and/or instructions can be storedand/or accessed on machine readable media that can include: computercomponents, devices, and recording media that retain digital data usedfor computing for some interval of time; semiconductor storage known asrandom access memory (RAM); mass storage typically for more permanentstorage, such as optical discs, forms of magnetic storage like harddisks, tapes, drums, cards and other types; processor registers, cachememory, volatile memory, non-volatile memory; optical storage such asCD, DVD; removable media such as flash memory (e.g., USB sticks orkeys), floppy disks, magnetic tape, paper tape, punch cards, standaloneRAM disks, Zip drives, removable mass storage, off-line, and the like;other computer memory such as dynamic memory, static memory, read/writestorage, mutable storage, read only, random access, sequential access,location addressable, file addressable, content addressable, networkattached storage, storage area network, bar codes, magnetic ink, and thelike.

The methods and systems described herein can transform physical and/oror intangible items from one state to another. The methods and systemsdescribed herein can also transform data representing physical and/orintangible items from one state to another.

The elements described and depicted herein, including in flow charts andblock diagrams throughout the figures, imply logical boundaries betweenthe elements. However, according to software or hardware engineeringpractices, the depicted elements and the functions thereof can beimplemented on machines through computer executable media having aprocessor capable of executing program instructions stored thereon as amonolithic software structure, as standalone software modules, or asmodules that employ external routines, code, services, and so forth, orany combination of these, and all such implementations can be within thescope of the present disclosure. Examples of such machines can include,but may not be limited to, personal digital assistants, laptops,personal computers, mobile phones, other handheld computing devices,medical equipment, wired or wireless communication devices, transducers,chips, calculators, satellites, tablet PCs, electronic books, gadgets,electronic devices, devices having artificial intelligence, computingdevices, networking equipments, servers, routers and the like.Furthermore, the elements depicted in the flow chart and block diagramsor any other logical component can be implemented on a machine capableof executing program instructions. Thus, while the foregoing drawingsand descriptions set forth functional aspects of the disclosed systems,no particular arrangement of software for implementing these functionalaspects should be inferred from these descriptions unless explicitlystated or otherwise clear from the context. Similarly, it will beappreciated that the various steps identified and described above can bevaried, and that the order of steps can be adapted to particularapplications of the techniques disclosed herein. All such variations andmodifications are intended to fall within the scope of this disclosure.As such, the depiction and/or description of an order for various stepsshould not be understood to require a particular order of execution forthose steps, unless required by a particular application, or explicitlystated or otherwise clear from the context.

The methods and/or processes described above, and steps thereof, can berealized in hardware, software or any combination of hardware andsoftware suitable for a particular application. The hardware can includea general purpose computer and/or dedicated computing device or specificcomputing device or particular aspect or component of a specificcomputing device. The processes can be realized in one or moremicroprocessors, microcontrollers, embedded microcontrollers,programmable digital signal processors or other programmable device,along with internal and/or external memory. The processes can also, orinstead, be embodied in an application specific integrated circuit, aprogrammable gate array, programmable array logic, or any other deviceor combination of devices that can be configured to process electronicsignals. It will further be appreciated that one or more of theprocesses can be realized as a computer executable code capable of beingexecuted on a machine readable medium.

The computer executable code can be created using a structuredprogramming language such as C, an object oriented programming languagesuch as C++, or any other high-level or low-level programming language(including assembly languages, hardware description languages, anddatabase programming languages and technologies) that can be stored,compiled or interpreted to run on one of the above devices, as well asheterogeneous combinations of processors, processor architectures, orcombinations of different hardware and software, or any other machinecapable of executing program instructions.

Thus, in one aspect, each method described above and combinationsthereof can be embodied in computer executable code that, when executingon one or more computing devices, performs the steps thereof. In anotheraspect, the methods can be embodied in systems that perform the stepsthereof, and can be distributed across devices in a number of ways, orall of the functionality can be integrated into a dedicated, standalonedevice or other hardware. In another aspect, the means for performingthe steps associated with the processes described above can include anyof the hardware and/or software described above. All such permutationsand combinations are intended to fall within the scope of the presentdisclosure.

Although the invention has been described and illustrated in theforegoing illustrative embodiments, it is understood that the presentdisclosure has been made only by way of example, and that numerouschanges in the details of implementation of the invention can be madewithout departing from the spirit and scope of the invention, which islimited only by the claims that follow. Features of the disclosedembodiments can be combined and rearranged in various ways.

All documents referenced herein are hereby incorporated by reference.

What is claimed:
 1. A method for detecting viewability, the methodcomprising: receiving, using at least one hardware processor, ananimated image file configured to change between a plurality of states;intercepting, using the at least one hardware processor, anadvertisement call, which was redirected from transmission between acomputing device and an advertisement server, to serve an advertisementin an advertising region on a webpage; selecting, using the at least onehardware processor, tracking code from a plurality of types of trackingcodes based on the animated image file used to determine whether theadvertisement in the advertising region on the webpage is viewable andbased on web browser information associated with the computing device,wherein the tracking code is configured to monitor states of theanimated image file that is loaded in association with the advertisementusing a tracking technique; inserting, using the at least one hardwareprocessor, code into the advertisement call, where the code renders theanimated image file and wherein the code executes the tracking code tomonitor states of the animated image file; transmitting, using the atleast one hardware processor, the advertisement with the inserted codeto the computing device, wherein the tracking code within inserted codereturns states of the animated image file; and determining, using the atleast one hardware processor, whether the advertisement is viewablebased on the returned state of the animated image file.
 2. The method ofclaim 1, further comprising generating a plurality of animated imagefiles that are each configured to rotate through a sequence of differentcolors over a predetermined time period.
 3. The method of claim 2,wherein each of the plurality of animated image files begins animatingby rotating through the sequence of different colors upon beingdisplayed within a viewable region of a browser viewport and ceasesanimating upon not being displayed within the viewable region of thebrowser viewport.
 4. The method of claim 3, wherein each color in thesequence of different colors is associated with a time from a start timeat which an animated image file began animating.
 5. The method of claim2, wherein the inserted code renders each of the plurality of animatedimage files in one of a plurality of different positions adjacent to theadvertisement in the advertising region on the webpage.
 6. The method ofclaim 5, wherein the inserted code causes the plurality of animatedimage files to be rendered in the plurality of different positionsadjacent to the advertising region on the webpage.
 7. The method ofclaim 6, wherein, in response to detecting that a first animated imagefile of the plurality of animated image files is currently beingdisplayed within a viewable region of a browser viewport, the firstanimated image files is caused to rotate through the sequence ofdifferent colors over the predetermined time period.
 8. The method ofclaim 7, wherein, in response to detecting that a second animated imagefile of the plurality of animated image files is not currently beingdisplayed within the viewable region of the browser viewport, the secondanimated image file is caused to cease rotating through the sequence ofdifferent colors.
 9. The method of claim 2, wherein the method furthercomprises retrieving, from the computing device using the tracking code,at a first sampling time, color information corresponding to at least afirst portion of the plurality of animated image files.
 10. The methodof claim 9, wherein the method further comprises retrieving, from thecomputing device using the tracking code, at a second sampling time,color information corresponding to at least a second portion of theplurality of animated image files, wherein the second portion of theplurality of animated image files is different than the first portion ofthe plurality of animated image files.
 11. The method of claim 10,wherein the advertisement is determined to be viewable based on thereceived color information from the first portion of the plurality ofanimated image files and the received color information from the secondportion of the plurality of animated image files and based on the timeassociated with colors associated with each of the plurality of animatedimage files.
 12. The method of claim 11, wherein the method furthercomprises transmitting, to the advertisement server, viewabilityinformation corresponding to the advertisement based on thedetermination.
 13. The method of claim 2, wherein the advertisement callto serve an advertisement is received from the computing device runningan application that loaded the webpage and wherein the method furthercomprises using the tracking code to determine a color of each of theplurality of animated image files.
 14. The method of claim 13, furthercomprising transmitting information determined by the tracking code to aremote site that is different from a content provider site associatedwith the webpage.
 15. The method of claim 2, wherein each of theplurality of animated image files is formatted in Graphics InterchangeFormat (GIF).
 16. The method of claim 2, wherein determining whether theadvertisement is viewable further comprises comparing a current detectedstate of each of the plurality of animated image files to a previouslydetected state of each of the plurality of animated image files.
 17. Themethod of claim 2, wherein the method further comprises: receiving arequest to serve a plurality of advertisements on the webpage, whereinthe content and the plurality of advertisements on the webpage aredisplayed within a browser window; and assigning a copy of each of theplurality of animated image files to each of the plurality ofadvertisements on the webpage, wherein each of the plurality of animatedimage files changes between the plurality of states upon detecting thatthe associated advertisement is displayed within the viewable region ofthe browser window.
 18. A system for detecting content viewability, thesystem comprising: at least one hardware processor that is configuredto: receive an animated image file configured to change between aplurality of states; intercept an advertisement call, which wasredirected from transmission between a computing device and anadvertisement server, to serve an advertisement in an advertising regionon a webpage; select tracking code from a plurality of types of trackingcodes based on the animated image file used to determine whether theadvertisement in the advertising region on the webpage is viewable andbased on web browser information associated with the computing device,wherein the tracking code is configured to monitor states of theanimated image file that is loaded in association with the advertisementusing a tracking technique; insert code into the advertisement call,where the code renders the animated image file and wherein the codeexecutes the tracking code to monitor states of the animated image file;transmit the advertisement with the inserted code to the computingdevice, wherein the tracking code within inserted code returns states ofthe animated image file; and determine whether the advertisement isviewable based on the returned state of the animated image file.
 19. Anon-transitory computer-readable medium containing computer-executableinstructions that, when executed by a processor, cause the processor toperform a method for detecting content viewability, the methodcomprising: receiving, using at least one hardware processor, ananimated image file configured to change between a plurality of states;intercepting, using the at least one hardware processor, anadvertisement call, which was redirected from transmission between acomputing device and an advertisement server, to serve an advertisementin an advertising region on a webpage; selecting, using the at least onehardware processor, tracking code from a plurality of types of trackingcodes based on the animated image file used to determine whether theadvertisement in the advertising region on the webpage is viewable andbased on web browser information associated with the computing device,wherein the tracking code is configured to monitor states of theanimated image file that is loaded in association with the advertisementusing a tracking technique; inserting, using the at least one hardwareprocessor, code into the advertisement call, where the code renders theanimated image file and wherein the code executes the tracking code tomonitor states of the animated image file; transmitting, using the atleast one hardware processor, the advertisement with the inserted codeto the computing device, wherein the tracking code within inserted codereturns states of the animated image file; and determining, using the atleast one hardware processor, whether the advertisement is viewablebased on the returned state of the animated image file.